package com.booking.service;

import com.booking.common.dto.PageReq;
import com.booking.common.dto.PageResp;
import com.booking.controller.model.req.grouping.GroupingCreateReq;
import com.booking.controller.model.req.grouping.GroupingOrderFollowReq;
import com.booking.controller.model.req.grouping.GroupingQueryReq;
import com.booking.controller.model.req.grouping.GroupingUpdateReq;
import com.booking.controller.model.req.order.OrderPageQueryReq;
import com.booking.controller.model.res.GroupingDetail;
import com.booking.controller.model.res.GroupingOrderDetail;

/**
 * @author Qikai.Lin
 * @date 2023/5/17
 */
public interface GroupingService {
    PageResp<GroupingDetail> getAllGroupingInfo(PageReq<GroupingQueryReq> request);
    GroupingDetail getGroupingInfoDetail(Long groupingId);
    PageResp<GroupingOrderDetail> getGroupingOrderPage(PageReq<OrderPageQueryReq> request);
    GroupingOrderDetail getGroupingOrderDetail(Long orderId);
    Long createGrouping(GroupingCreateReq request);
    void updateGrouping(GroupingUpdateReq request);
    Long followGrouping(GroupingOrderFollowReq request);
    void deleteGrouping(Long groupingId);
    void cancelGroupingOrder(Long orderId);
    void payGroupingOrderBooking(Long orderId);
    void payGroupingOrder(Long orderId);
    void finishOrder(Long orderId);
}
